/*
 * Copyright 北京航空航天大学  @ 2015 版权所有
 */
package com.buaa.edu.leetcode.algorithm.array;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

/**
 * <p>杨辉三角生成，给定行</p>
 * @author towan
 * @email tongwenzide@163.com
 * @time 2015年6月21日
 */
public class PascalTriangle {

    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> result = new ArrayList<>();
        if(numRows<1){
            return result;
        }
        //初始化第一行
        List<Integer> row1 = new ArrayList<>();
        row1.add(1);
        result.add(row1);
        if(numRows==1){
            return result;
        }
        for(int i=1;i<numRows;i++){
            List<Integer> row = new ArrayList<>(); 
            row.add(1);
            for(int j=1;j<i;j++){
                //获取上一行相邻的两个元素之和
                row.add(j, result.get(i-1).get(j-1)+result.get(i-1).get(j));
            }
            row.add(1);
            result.add(row);
        }
        return result;
    }
    @Test
    public void testCase(){
        List<List<Integer>> generate = generate(5);
        System.out.println(generate);
    }
}
